//
//  RuntimeKit.h
//  ObjcRuntimeDemo
//
//  Created by 饶首建 on 17/3/5.
//  Copyright © 2017年 com.vince.rao. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface RuntimeKit : NSObject


/**
 获取类名

 @param class 类
 @return 类名
 */
+(NSString*)fetchClassName:(Class)class;

/**
 获取成员变量

 @param class 类
 @return NSArray
 */
+(NSArray*)fetchIvarList:(Class)class;

/**
 获取成员属性

 @param class 类
 @return NSArray
 */
+(NSArray*)fetchPropertyList:(Class)class;

/**
 获取类的实例方法

 @param class 类
 @return NSArray
 */
+(NSArray *)fetchMethodList:(Class)class;

/**
 获取类的协议

 @param class 类
 @return NSArray
 */
+(NSArray *)fetchProtocolList:(Class)class;

/**
 往类上添加新的方法与其实现

 @param class 类
 @param methodSel 方法名
 @param methodSelImpl 对应方法实现的方法名
 */
+(void)addMethod:(Class)class method:(SEL)methodSel method:(SEL)methodSelImpl;

/**
 方法交换

 @param class 交换方法所在的类
 @param method1 方法1
 @param method2 方法2
 */
+(void)methodSwap:(Class)class firstMethod:(SEL)method1 secondMethod:(SEL)method2;




@end
